/* QueryTextString.fx - Words filter by a presence of meaning, * semantic relations, translations. * * Copyright (c) 2009-2011 Andrew Krizhanovsky <andrew.krizhanovsky at gmail.com> * Distributed under EPL/LGPL/GPL/AL/BSD multi-license. */ package wiwordik.search_window; //import wiwordik.word_card.WC; import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.ListView; import javafx.scene.control.TextField; import javafx.scene.input.KeyCode; import wikokit.base.wikipedia.sql.Connect; import javafx.scene.input.KeyEvent; import wikokit.base.wikt.sql.TPage; import wiwordik.word_card.WC; //import javafx.scene.control.TextBox; /** Text edit field with a user search text query. */ public class QueryTextString { public String word0; public Connect wikt_parsed_conn; String word_value_last_open_card = ""; // value of last word, with which the wordcard was open, to prevent double opening of the same word card String word_value_old = word0; String word_value = ""; // var word_value: String = bind word_Text.rawText; WordList word_list; LangChoice lang_choice; public final TextField word_textfield = new TextField(); /** Set parameters of the class. * @param _word0 tips for the reader: recommendation and tutorial * @param _word_list list of words in the dictionary (ListView) * @param _lang_choice checkboxes and text field with language codes */ public void initialize( String _word0, Connect _wikt_parsed_conn, WordList _word_list, LangChoice _lang_choice ) { word0 = _word0; wikt_parsed_conn = _wikt_parsed_conn; word_list = _word_list; lang_choice = _lang_choice; /* word_Text.focusedProperty().addListener(new ChangeListener<Boolean>(){ // focus changed public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { } });*/ /** Updates vertical list of words, open card for `Enter` */ word_textfield.addEventHandler(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent event) { //System.out.println("KEY_RELEASED, word_value="+word_value); //event.consume(); word_value_old = word_value; word_value = word_textfield.getText().trim(); // 1. update list of words if the input word was changed if(0 != word_value.compareToIgnoreCase(word_value_old)) updateWordList(); // 2. open word card for `Enter` if (event.getCode() == KeyCode.ENTER) { // && word_value_last_open_card != word_value) { String word_in_list = word_list.getSelectedOrFirstWordInList(); String new_word = ""; // does exist the word entered by user? TPage _tpage = TPage.get(wikt_parsed_conn, word_value); if(null == _tpage) { // does not exist, takes from the list if(word_in_list.length()==0) return; // word list is empty new_word = word_in_list; _tpage = TPage.get(wikt_parsed_conn, word_in_list); } else { new_word = word_value; } if( word_value_last_open_card.length() == 0 || // if 0 word cards are opened ( new_word.length() > 0 && // there is a word to search in Wiktionary !word_value_last_open_card.equals(new_word) // if user trying to open the same card ) ) { word_value_last_open_card = new_word; //System.out.println("yes: openWordCard(); word_value_last_open_card="+word_value_last_open_card+"; new_word="+ new_word); WC wc = new WC(); wc.createCXLangList (wikt_parsed_conn, _tpage); // ??? no: word_list.openWordCard(); } } } }); } /** Gets text value of editable TextField. */ public String getWordValue() { word_value = word_textfield.getText(); return word_value; } /** Sets value of EditBox. */ public void setWordValue( String _word_value ){ //System.err.println("QueryTextString.setWordValue(), _word_value=" + _word_value); word_textfield.setText(_word_value); // word_Text.text = _word_value; word_value = _word_value; ////updateWordList(); } /** Remembers old (previous) text value of EditBox. */ public void setWordValueOld( String _word_value_old ){ word_value_old = _word_value_old; } /** Remembers previous text value of EditBox. */ public void saveWordValue(){ if(null == word_value || word_value.length() == 0) { word_value_old = ""; } else { word_value_old = word_value.trim(); } } /** Interface to the real function updateWordList(). */ public void updateWordList() { if(null == word_list) { System.out.println("Error: QueryTextString.updateWordList(): word_list is empty, non-initialized"); return; } word_list.updateWordList( word_list.getSkipRedirects(), word_value); //word_value_old = word_value.trim(); //saveWordValue(); } }